Systems and methods for simulating multiple call center balancing

ABSTRACT

The method may include simulating a call and determining a propensity score associated with the call. The method may also include selecting a first destination, from a plurality of destinations, for the call based on a routing algorithm and the propensity score. The method may include routing the call to the first destination and updating a first call load associated with the first destination based on the call. The method may also include comparing the first call load to a plurality of other call loads. Each of the other call loads may be associated with at least one of the plurality of destinations. The method may also include updating the routing algorithm based on the comparing.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Patent Application No. 62/140,748, filed on Mar. 31, 2015, and U.S. Patent Application No. 62/292,979, filed on Feb. 9, 2016, both of which are hereby incorporated by reference herein in their entireties.

TECHNICAL FIELD

The present disclosure generally relates to load balancing and, more specifically, to anticipating the effects of changing load balance parameters on multiple call centers.

BACKGROUND

Effective call center management remains an important but as of yet elusive goal. Because call centers are often a key client-facing side of the business, effective call center management may be crucial to maintaining client relationships. Accordingly, there remains an important unmet need for tools that enable more effective call center management.

Effective load balancing algorithms are essential to distributing call volumes across multiple call centers without negatively impacting performance of one or more of the multiple call centers. Due to the coupled nature of call centers in a multiple-call-center arrangement, load-balancing algorithms are more effectively tested across all call centers in the arrangement, rather than testing at one call center at a time. Thus, testing and modifying load balancing generally affects customers and customer service representatives. There is a need for an environment or simulation of interrelated multiple call centers in which different load balancing algorithms can be tested and modified without disrupting customer service operations at the call centers.

SUMMARY

In an aspect, this disclosure is directed to a method. The method may include simulating a call and determining a propensity score associated with the call. The method may also include selecting a first destination, from a plurality of destinations, for the call based on a routing algorithm and the propensity score. The method may include routing the call to the first destination and updating a first call load associated with the first destination based on the call. The method may also include comparing the first call load to a plurality of other call loads. Each of the other call loads may be associated with at least one of the plurality of destinations. The method may also include updating the routing algorithm based on the comparing.

According to another aspect, this disclosure is directed to a system. The system may include a processor and memory storing instructions that cause the processor to effectuate operations. The operations may include simulating a call and determining a propensity score associated with the call. The operations may also include selecting a first destination, from a plurality of destinations, for the call based on a routing algorithm and the propensity score. The operations may include routing the call to the first destination and updating a first call load associated with the first destination based on the call. The operations may also include comparing the first call load to a plurality of other call loads. Each of the other call loads may be associated with at least one of the plurality of destinations. The operations may also include updating the routing algorithm based on the comparing.

According to yet another aspect, this disclosure is directed to a non-transitory computer-readable storage medium. The non-transitory computer-readable storage medium may store instructions that cause a processor executing the instructions to effectuate operations. The operations may include simulating a call and determining a propensity score associated with the call. The operations may also include selecting a first destination, from a plurality of destinations, for the call based on a routing algorithm and the propensity score. The operations may include routing the call to the first destination and updating a first call load associated with the first destination based on the call. The operations may also include comparing the first call load to a plurality of other call loads. Each of the other call loads may be associated with at least one of the plurality of destinations. The operations may also include updating the routing algorithm based on the comparing.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary arrangement of multiple call centers.

FIG. 2 is a block diagram a data flow of an exemplary simulator.

FIG. 3 is a block diagram illustrating an exemplary implementation of a simulator device.

FIG. 4 is an block diagram of a computer system that may comprise all or a portion of an exemplary simulator.

DETAILED DESCRIPTION

Balancing incoming calls to a call center may depend upon numerous, dynamic factors, including the availability of customer service agents (“agents”), the skill level of agents, whether the agents are automated systems or human service representatives, a characteristics of the customer, a type of incoming call, an issue related to the call, call abandonment (e.g., a customer terminating the call before the call is answered by the agent), or the like. Balancing incoming calls to an arrangement of multiple calling centers may depend upon numerous, dynamic factors, including the routing protocols of the calling centers, skill levels of agents at the call centers, the number of agents at each call center, call complexity, forecasted and actual call volumes, wait times, call abandonments, customer characteristics, and the like. This multifactor load-balancing methodology may be refined and tweaked through experimentation or trial-and-error. That is, testing new load balancing settings or measures may benefit from seeing these changes applied in practice. The disclosed systems and methods provide a simulation of a multi-call center system in which new load balance settings or measures may be applied and evaluated prior to launching such measures in practice.

Now referring to the drawings, wherein like reference numbers refer to like elements, there is illustrated an exemplary environment 100 that may be simulated using the disclosed technology, in accordance with an aspect of the disclosure. As shown in FIG. 1, for example, environment 100 may represent a data flow as part of providing customer service to a customer 102. Customer 102 may call or otherwise initiate communication with a service provider. The communication may be routed to an inbound call manager 104.

From customer 102, inbound call manager 104 may obtain information related to customer 102 or the desired service. For example, input call manager 104 may comprise an automated system that requests information from customer 102. In an aspect, inbound call manager 104 may comprise an interactive voice response (IVR) solution that uses prerecorded prompts and menus to present information or options to customer 102. In response, customer 102 may provide information, such as identification information (e.g., name, account number, address, telephone number), or information related to the service requested (e.g., identifying a service type, whether the call is related to a previous service request) to inbound call manager 104. Customer 102 may provide this information in any number of ways, such as through voice inputs (with voice-to-text translation) or keypad inputs. Inbound call manager 104 may analyze the input information. For example, inbound call manager 104 may score or categorize the call from customer 102 based on at least the input information. Inbound call manager 104 may optionally consider other factors to score or categorize the call from customer 102, such as, for example, a customer or service history of customer 102, the manner (e.g., tone) in which customer 102 provides the information, or any other information.

Inbound call manager 104 may provide the input information received from customer 102, an analysis of the input information, the score or category associated with the call, or any other information to a load balancer 106. In turn, load balancer 106 may decide, based on the data received from inbound call manager 104, how to route the call from customer 102. This may include identifying a particular call center 108. Optionally, the routing may include identifying a particular agent 110 to which the call may be routed.

Load balancer 106 may obtain or monitor information relating to call centers 108 or agents 110. For example, this information may include, but not be limited to, call-answer statistics (e.g., the number of calls answered within a certain amount of time, the number of calls dropped before being answered), call statistics (e.g., average call time, time to resolve calls, number of calls from a particular customer 102 until his/her issue is resolved), the routing protocol (e.g., Avaya, CISCO routing), agent skill level, headcount of agents at a given call center 108, expected delays associated with one or more call centers 108 or agents 110, forecasted call volumes (e.g., by call type, for a time period), or any other statistics or data associated with one or more call centers 108 or agents 110.

Load balancer 106 may engage in rules-based decision making based on the information related to call centers 108, agents 110, or customer 102. These rules may dynamically change. For example, if a queue associated with call center 108 a exceeds a threshold, load balancer 106 may dynamically react to shift incoming calls that would otherwise be directed to call center 108 a to another call center 108 (e.g., call center 108 b). Load balancer 106 may generally direct calls to a particular call center 108. Optionally, load balancer 106 may provide additional information to call center 108 that can be used by call center 108 to identify a particular agent 110 to which the call will be routed. Optionally, load balancer 106 may identify a particular agent 110, type of agent 110, or other aspect of agent 110 at call center 108 to which the call should be routed.

Like load balancer 106, call center 108 may engage in rules-based decision making based on information related to customer 102 or agents 110 associated with call center 108 to route incoming calls. For example, information related to customer 102 or the call may be provided to call center 108 by load balancer 106.

Incoming call from customer 102 may be scored or categorized by one or more of inbound call manager 104 and load balance 106. For example, calls may be categorized based on the age of customer 102, a type of service customer 102 is seeking or may be interested in, family status, job status, military ranking, homeowner status, or any other characteristics that may be beneficial in determining how to route the incoming call.

In an aspect, a call may be scored or evaluated to determine or predict an upsell propensity (“propensity score”). A propensity score may be indicative of how likely customer 102 may be open or interested in discussing products, services, or the like other than the specific reason for customer's call. A propensity score may be assessed on a range (e.g., very likely to not likely at all) or as a binary value (e.g., an indication of whether to engage in upselling with customer 102). Optionally, a propensity score may indicate a type of upselling to be applied to customer 102. For example, a propensity score may indicate customer 102 is open to upselling for one category of services or products, but not another. For example, a propensity score may indicate customer 102 is highly likely to be interested in additional homeowner services but is uninterested (or less interested) in purchasing additional car products or services.

The propensity score may be based on a formula derived from previous sales/call data. For example, by evaluating these types of records, a correlation between customer's age range (e.g., 45-65) and an interest in additional services or products (e.g., retirement planning) may be identified. This information may affect or impact a customer's propensity score. For example, a customer's age may be derived from information acquired by inbound call manager 104. The propensity score for customer 102 aged 56 may be higher than if their age was 32, at least for upselling pertaining to retirement planning. As another example, evaluation of past sales or calls may indicate a correlation between purchasing increased life insurance and certain major life events (e.g., marriage, home purchase, new child, job change). Inbound call manager 102 may ask certain questions that may indicate the occurrence of such major life events, and the occurrence or nonoccurrence of such events may impact the propensity score.

The propensity score may optionally be based on the reason of the call. For example, if customer 102 is calling to fix a high priority (e.g., large dollar value) or emergency (e.g., time sensitive) issue, the propensity score may be lower based on that issue. As another example, analysis of past calls may identify a correlation between customers calling regarding a first type of service and a high upselling rate for a second type of service. For example, customer 102 may be more likely to be interested in increasing a liability coverage amount for a car insurance policy when calling to add another driver or car to the insurance policy. Such information may be factored into his/her propensity score.

The propensity score may optionally be based on the behavior of customer 102. For example, voice analysis of customer's responses to questions or prompts from inbound call manager 104 may indicate a customer's character or mood (e.g., impatient, frustrated) that can be evaluated and correlated to a propensity score. Another customer behavior that may impact the propensity score is the speed at which customer 102 responds to prompts, the number of times customer 102 changes their answer, returns to a previous prompt, or request a prompt be repeated, or the like. A correlation between the speed at which customer 102 completes the information-gathering process performed by inbound call manager 104 may correlate to a propensity for being receptive to upselling. This and any other behavioral attributes of customer 102 may factor into the propensity score of customer 102.

The reason or reasons for customer 102 to make the call may be evaluated and further impact algorithms or processes of load balancer 106. For example, inbound call manager 104 or load balancer 106 may evaluate the complexity or difficulty of an incoming call. This evaluation may consist of categorizing the call (e.g., as low, medium, or high), scoring a call (e.g., on a 10-point scale), or any other evaluation method. This evaluation may be based on the type of services requested by customer 102, such as based on information obtained by inbound call manager 104. For example, the evaluation may be based on a category of services or products relating to the call (e.g., auto insurance, life insurance, household products), or the complexity of customer's request. For example, a call regarding a dishwasher warranty may be categorized as less complex than a call regarding a health insurance policy, or a call regarding adding a beneficiary to an investment fund may be categorized as less complex than a call regarding multiple movements of funds within the investment fund. This categorizing or ranking of the call may be independent of the propensity score.

The categorizing or ranking of the call may depend upon a skill set with which agent 110 may respond to the call. For example, calls that require knowledge in a certain product or service may be categorized together. As another example, certain calls may be grouped together to be answered by a specific type of agent 110 or call center 108. For example, it may be desirable that, when balancing the multiple call centers, load balancer 106 routes all calls regarding auto insurance claims to call center 108 c. Additionally or alternatively, load balancer 106 may operate such that all calls regarding life insurance policies not be routed to call center 108 b.

Thus, the result of evaluating the call may include a category or ranking of the call, or conditions regarding the handling of the call. For example, the results may include one or more of a call type, a subject matter, a ranking, a categorization, a requirement that the call be directed to (or not directed to) a particular call center 108, an associated skill level it may be desirable for agent 110 answering the call to possess, an estimated time to resolve the call, or the like. Load balancer 106 may use one or more of these results to route the call.

Routing the call may depend upon one or more of the propensity score, the call analysis (e.g., ranking, categorization, or conditions associated with the call), or information regarding call centers 108 or agents 110. Thus, load balancer 106 may comprise one or more processes, methods, or algorithms to route a call based on one or more of these factors.

As those skilled in the art will appreciate, one or more of inbound call manager 104, load balancer 106, call center 108, or agent 110 (e.g., Windows, OS, UNIX, Linux, Solaris, Android, or iOS), various conventional support software, or drivers typically associated with computers. Further, one or more of inbound call manager 104, load balancer 106, call center 108, or agent 110 may include any suitable telephone, personal computer, network computer, workstation, minicomputer, mainframe, tablet, mobile device, or the like. Customer 102 may comprise any combination of hardware or software that can initiate communication with inbound call manager 104.

One or more of inbound call manager 104, load balancer 106, call center 108, or agent 110 may employ any type of database, such as relational, hierarchical, graphical, object-oriented, or other database configurations. Common database products that may be used include DB2 by IBM (White Plains, N.Y.), various database products available from Oracle Corporation (Redwood Shores, Calif.), Microsoft Access or Microsoft SQL Server by Microsoft Corporation (Redmond, Wash.), or any other suitable database product. Moreover, the databases may be organized in any suitable manner, for example, as data tables or lookup tables. Each record may be a single file, a series of files, a linked series of data fields, or any other data structure. Association of certain data may be accomplished through any desired data association technique, such as those known or practiced in the art. For example, the association may be accomplished either manually or automatically. Automatic association techniques may include, for example, a database search, a database merge, GREP, AGREP, SQL, using a key field in the tables to speed searches, sequential searches through all the tables and files, sorting records in the file according to a known order to simplify lookup, or the like. The association step may be accomplished by a database merge function, for example, using a “primary key field” (hereinafter “key field”), in pre-selected databases or data sectors.

More particularly, a key field may partition a database associated with one or more of inbound call manager 104, load balancer 106, call center 108, or agent 110 according to the high-level class of objects defined by the key field. For example, certain types of data may be designated as a key field in a plurality of related data tables, and the data tables may then be linked on the basis of the type of data in the key field. The data corresponding to the key field in each of the linked data tables is preferably the same or of the same type. However, data tables having similar, though not identical, data in the key fields may also be linked by using AGREP, for example. In accordance with one aspect of the disclosure, any suitable data storage technique may be utilized to store data without a standard format. Data sets may be stored using any suitable technique, including, for example, storing individual files using an ISO/DEC 7816-4 file structure; implementing a domain whereby a dedicated file is selected that exposes one or more elementary files containing one or more data sets; using data sets stored in individual files using a hierarchical filing system; data sets stored as records in a single file (including compression, SQL accessible, hashed via one or more keys, numeric, alphabetical by first tuple, etc.); Binary Large Object (BLOB); stored as ungrouped data elements encoded using ISO/IEC 7816-6 data elements; stored as ungrouped data elements encoded using ISO/IEC Abstract Syntax Notation (ASN.1) as in ISO/IEC 8824 and 8825; or other proprietary techniques, which may include fractal compression methods, image compression methods, or the like.

In one exemplary aspect, the ability to store a wide variety of information in different formats is facilitated by storing the information as a BLOB. Thus, any binary information can be stored in a storage space associated with a data set. As discussed above, the binary information may be stored on the financial transaction instrument or external to but affiliated with the financial transaction instrument. The BLOB method may store data sets as ungrouped data elements formatted as a block of binary via a fixed memory offset using one of fixed storage allocation, circular queue techniques, or best practices with respect to memory management (e.g., paged memory, least recently used). By using BLOB methods, the ability to store various data sets that have different formats facilitates the storage of data associated with the system by multiple and unrelated owners of the data sets. For example, a first data set, which may be stored, may be provided by a first party, a second data set, which may be stored, may be provided by an unrelated second party, and yet a third data set, which may be stored, may be provided by a third party unrelated to the first and second party. Each of these three example data sets may contain different information that is stored using different data storage formats or techniques. Further, each data set may contain subsets of data that also may be distinct from other subsets.

As stated above, in various aspects of one or more of inbound call manager 104, load balancer 106, call center 108, or agent 110, the data can be stored without regard to a common format. However, in one exemplary aspect of the disclosure, the data set (e.g., BLOB) may be annotated in a standard manner when provided for manipulating the data onto the financial transaction instrument. The annotation may comprise a short header, trailer, or other appropriate indicator related to each data set that is configured to convey information useful in managing the various data sets. For example, the annotation may be called a “condition header,” “header,” “trailer,” or “status,” herein, and may comprise an indication of the status of the data set or may include an identifier correlated to a specific issuer or owner of the data. In one example, the first three bytes of each data set BLOB may be configured or configurable to indicate the status of that particular data set: e.g., LOADED, INITIALIZED, READY, BLOCKED, REMOVABLE, or DELETED. Subsequent bytes of data may be used to indicate for example, the identity of the issuer, user, a transaction or membership account identifier, or the like. Each of these condition annotations are further discussed herein.

The data set annotation may also be used for other types of status information as well as various other purposes. For example, the data set annotation may include security information establishing access levels. The access levels may, for example, be configured to permit only certain individuals, levels of employees, companies, or other entities to access data sets, or to permit access to specific data sets based on at least the transaction, inbound call manager 104, load balancer 106, call center 108, or agent 110, or the like. Furthermore, the security information may restrict/permit only certain actions such as accessing, modifying, or deleting data sets. In one example, the data set annotation indicates that only the data set owner or the user are permitted to delete a data set, various identified users may be permitted to access the data set for reading, and others are altogether excluded from accessing the data set. However, other access restriction parameters may also be used allowing various entities to access a data set with various permission levels as appropriate.

The data, including the header or trailer, may be received by a standalone interaction device configured to add, delete, modify, or augment the data in accordance with the header or trailer. As such, in one aspect, the header or trailer is not stored on the transaction device along with the associated issuer-owned data, but instead the appropriate action may be taken by providing, to the transaction instrument user at the standalone device, the appropriate option for the action to be taken. A data storage arrangement wherein the header or trailer, or header or trailer history, of the data may be stored on the transaction instrument in relation to the appropriate data. One skilled in the art will also appreciate that, for security reasons, any databases, systems, devices, servers, or other components of one or more of inbound call manager 104, load balancer 106, call center 108, or agent 110 may comprise any combination thereof at a single location or at multiple locations, wherein each database or system includes any of various suitable security features, such as firewalls, access codes, encryption, decryption, compression, decompression, or the like.

FIG. 2 is a block diagram of a simulator 200 that may be used to simulate environment 100 as described herein. Simulator 200 may include a call simulator 202 that inputs simulated “calls” that can be used to determine an impact of different load balancing methods on call centers 108. For example, a call simulator 202 may periodically output one or more simulated calls based on historical or estimated call input rates. The simulated calls may include raw call data, such as user answers to prompts from inbound call manager 104. In an aspect, simulated calls may be call scores, including, for example, propensity scores, call complexity (e.g., low, medium, high), or the like, as discussed above. Call simulator 202 may provide simulated calls to load-balancing algorithm 204.

Simulator 200 may comprise or access profiles 206 regarding one or more call center 108 or agent 110. Profiles 206 may comprise one or more call center profiles 208. In turn, call center profile may optionally comprise one or more agent profiles 206.

Call center profiles 208 may be based on demographic data associated with call center 108 or associated agents 110, including head count, skill level, or the like, based on current information. Call center profile 208 may comprise information to simulate typical or average performance of a respective call center 108. This average performance may be a snapshot of call center performance for a period of time (e.g., an average hour, day, week, or month), or a specific period of time (e.g., an average noon hour, Tuesday, or Thanksgiving), or a historical snapshot (e.g., Jan. 8, 2011, or the last week of 2004). This information, when used to simulate a load, may output performance data such as the (mean) average wait time, (mean) average call handling time, standard deviation for each, average number of call transfers, abandonments per skill and/or day, agent group utilization rates (e.g., per group, skill, or period of time), call volumes and abandonments (e.g., per group, skill, or period of time), or any other factors or measurements of call center activity or performance.

Call center profiles 208 may include predicted performance of associated call centers 108, and agent profiles 210 may include predicted performance of associated agents 110. The predicted performance may include, for example, throughput, time-per-call, success rates, or the like. The predicted performance may further be broken down by call type, call complexity, propensity score, or the like. Predicted performance may be based on actual past performance thereof or based on an analysis of the demographics of call centers 108 or agents 110. For example, if call center profile 208 associated with call center 108 does not have historical performance data of call center 108 (e.g., because call center 108 is new or agents 110 comprising call center 108 are new), call center profile 208 may predict or approximate expected performance associated with call center 108 based on historical trends based on call center profiles 208 or agent profiles 210 that have a number of shared demographics with the particular call center 108.

Profiles 206 may be static or dynamic. For example, profiles 206 may be adjusted based on actual collected data regarding the performance of call centers 108 or agents 110, changes in personnel at call centers 108, the acquisition by agents 110 of new skills or training, attendance, or the like.

Agent profiles 210 may be used to model specific personnel or a category of call center employee. For example, different agent profiles 210 may exist for different types of agents 110, such as based on demographic information of agents 110. For example, different agent profiles 210 may model agents specializing in specific areas (e.g., home insurance, car insurance), with specific skill sets (e.g., multilingual), or the like.

Load-balancing algorithm 204 may use profiles 206 to route simulated calls from call simulator 202 to particular call centers 108 or agents 110 associated with the respective profiles 206. The output of load-balancing algorithm 204 may be provided to a simulated load 212. Simulated load 212 may simulate activity of call centers 108 or agents 110 based on simulated calls assigned to the respective call centers 108 or agents 110 and based on profiles 206 associated with each of the respective call centers 108 or agents 110. In an aspect simulated load 212 allows for evaluation of the efficacy of load-balancing algorithm 204 without actually having to implement load-balancing algorithm 204 in a life call center environment. This may allow adjusting or fine-tuning of load-balancing algorithm 204.

Load-balancing algorithm 204 may use simulated load 212 when routing simulated calls. For example, load-balancing algorithm 204 may route simulated calls based at least in part on queue lengths associated with one or more call centers 108 or agents 110. In this manner, a feedback loop between load-balancing algorithm 204 and simulated load 212 may be used to evaluate or adjust load-balancing algorithm 204.

Simulator 200 may optionally be used to test load-balancing algorithms 204 of specific call centers 108. In an aspect, load-balancing algorithm 204 may use profiles 206 to route simulated calls from call simulator 202 to particular agents 110 within call center 108 that are associated with the respective profiles 206. The output of load-balancing algorithm 204 may be provided to a simulated load 212. Simulated load 212 may simulate activity of agents 110 within call center 108 based on simulated calls assigned to agents 110 within call center 108 and based on profiles 206 associated with each of the respective agents 110. In an aspect simulated load 212 allows for evaluation of the efficacy of load-balancing algorithm 204 without actually having to implement load-balancing algorithm 204 in a life call center environment. This may allow adjusting or fine-tuning of load-balancing algorithm 204.

Load-balancing algorithm 204 may use simulated load 212 when routing simulated calls. For example, load-balancing algorithm 204 may route simulated calls based at least in part on queue lengths associated with one or more agents 110. In this manner, a feedback loop between load-balancing algorithm 204 and simulated load 212 may be used to evaluate or adjust load-balancing algorithm 204.

Device 300 may comprise all or a part of simulator 200. Device 300 may comprise hardware or a combination of hardware and software. The functionality to facilitate telecommunications via a telecommunications network may reside in one or combination of network devices 200. Device 300 depicted in FIG. 2 may represent or perform functionality of an appropriate device 300, or combination of network devices 200, such as, for example, a component or various components of a cellular broadcast system wireless network, a processor, a server, a gateway, a node, a mobile switching center (MSC), a short message service center (SMSC), an ALFS, a gateway mobile location center (GMLC), a radio access network (RAN), a serving mobile location center (SMLC), or the like, or any appropriate combination thereof. It is emphasized that the block diagram depicted in FIG. 2 is exemplary and not intended to imply a limitation to a specific implementation or configuration. Thus, device 300 may be implemented in a single device or multiple devices (e.g., single server or multiple servers, single gateway or multiple gateways, single controller or multiple controllers). Multiple network entities may be distributed or centrally located. Multiple network entities may communicate wirelessly, via hard wire, or any appropriate combination thereof.

Device 300 may comprise a processor 302 and a memory 304 coupled to processor 302. Memory 304 may contain executable instructions that, when executed by processor 302, cause processor 302 to effectuate operations associated with mapping wireless signal strength. As evident from the description herein, device 300 is not to be construed as software per se.

In addition to processor 302 and memory 304, device 300 may include an input/output system 306. Processor 302, memory 304, and input/output system 306 may be coupled together (coupling not shown in FIG. 2) to allow communications therebetween. Each portion of device 300 may comprise circuitry for performing functions associated with each respective portion. Thus, each portion may comprise hardware, or a combination of hardware and software. Accordingly, each portion of device 300 is not to be construed as software per se. Input/output system 306 may be capable of receiving or providing information from or to a communications device or other network entities configured for telecommunications. For example input/output system 306 may include a wireless communications (e.g., WiFi/2.5G/3G/4G/GPS) card. Input/output system 306 may be capable of receiving or sending video information, audio information, control information, image information, data, or any combination thereof. Input/output system 306 may be capable of transferring information with device 300. In various configurations, input/output system 306 may receive or provide information via any appropriate means, such as, for example, optical means (e.g., infrared), electromagnetic means (e.g., RF, WiFi, Bluetooth®, ZigBee®), acoustic means (e.g., speaker, microphone, ultrasonic receiver, ultrasonic transmitter), or a combination thereof. In an example configuration, input/output system 306 may comprise a WiFi finder, a two-way GPS chipset or equivalent, or the like, or a combination thereof.

Input/output system 306 of device 300 also may contain communication connection 308 that allows device 300 to communicate with other devices, network entities, or the like. Communication connection 308 may comprise communication media. Communication media typically embody computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, or wireless media such as acoustic, RF, infrared, or other wireless media. The term computer-readable media as used herein includes both storage media and communication media. Input/output system 306 also may include an input device 310 such as keyboard, mouse, pen, voice input device, or touch input device. Input/output system 306 may also include an output device 312, such as a display, speakers, or a printer.

Processor 302 may be capable of performing functions associated with telecommunications, such as functions for processing broadcast messages, as described herein. For example, processor 302 may be capable of, in conjunction with any other portion of device 300, determining a type of broadcast message and acting according to the broadcast message type or content, as described herein.

Memory 304 of device 300 may comprise a storage medium having a concrete, tangible, physical structure. As is known, a signal does not have a concrete, tangible, physical structure. Memory 304, as well as any computer-readable storage medium described herein, is not to be construed as a signal. Memory 304, as well as any computer-readable storage medium described herein, is not to be construed as a transient signal. Memory 304, as well as any computer-readable storage medium described herein, is not to be construed as a propagating signal. Memory 304, as well as any computer-readable storage medium described herein, is to be construed as an article of manufacture.

Memory 304 may store any information utilized in conjunction with telecommunications. Depending upon the exact configuration or type of processor, memory 304 may include a volatile storage 314 (such as some types of RAM), a nonvolatile storage 316 (such as ROM, flash memory), or a combination thereof. Memory 304 may include additional storage (e.g., a removable storage 318 or a nonremovable storage 320) including, for example, tape, flash memory, smart cards, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, USB-compatible memory, or any other medium that can be used to store information and that can be accessed by device 300. Memory 304 may comprise executable instructions that, when executed by processor 302, cause processor 302 to effectuate operations to map signal strengths in an area of interest.

FIG. 3 illustrates a computer-based system 400 that may constitute or include parts of one or more of inbound call manager 104, load balancer 106, call center 108, agent 110, or device 300. Computer-based system 400 includes at least one processor, such as a processor 402. Processor 402 may be connected to a communication infrastructure 404, for example, a communications bus, a cross-over bar, a network, or the like. Various software aspects are described in terms of this example computer-based system 400. Upon perusal of the present description, it will become apparent to a person skilled in the relevant art(s) how to implement the present disclosure using other computer systems or architectures.

Computer-based system 400 includes a display interface 406 that forwards graphics, text, or other data from communication infrastructure 404 or from a frame buffer (not shown) for display on a display unit 408.

Computer-based system 400 further includes a main memory 410, such as random access memory (RAM), and may also include a secondary memory 412. Secondary memory 412 may further include, for example, a hard disk drive 414 or a removable storage drive 416, representing a floppy disk drive, a magnetic tape drive, an optical disk drive, etc. Removable storage drive 416 reads from or writes to a removable storage unit 418 in a well-known manner. Removable storage unit 418 may represent a floppy disk, magnetic tape, or an optical disk, and may be read by and written to by removable storage drive 416. As will be appreciated, removable storage unit 418 includes a computer usable storage medium having computer software or data stored therein.

In accordance with various aspects of the present disclosure, secondary memory 412 may include other similar devices for allowing computer programs or other instructions to be loaded into computer-based system 400. Such devices may include, for example, a removable storage unit 420 and an interface 422. Examples of such may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an erasable programmable read only memory (EPROM), or programmable read only memory (PROM)) and associated socket, and other removable storage units and interfaces, which allow software and data to be transferred from removable storage unit 420 to computer-based system 400.

Computer-based system 400 may further include communication interface 424. Communication interface 424 may allow software or data to be transferred between computer-based system 400 and external devices. Examples of communication interface 424 include, but may not be limited to a modem, a network interface (such as an Ethernet card), a communications port, a Personal Computer Memory Card International Association (PCMCIA) slot and card, or the like. Software or data transferred via communication interface 424 may be in the form of a number of signals, hereinafter referred to as signals 426, which may be electronic, electromagnetic, optical or other signals capable of being received by communication interface 424. Signals 426 may be provided to communication interface 424 via a communication path (e.g., channel) 428. Communication path 428 carries signals 426 and may be implemented using wire or cable, fiber optics, a telephone line, a cellular link, a radio frequency (RF) link, or other communication channels.

In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as removable storage drive 416, a hard disk installed in hard disk drive 414, or the like. These computer program products provide software to computer-based system 400. The present disclosure is directed to such computer program products.

Computer programs (also referred to as computer control logic) may be stored in main memory 410 or secondary memory 412. The computer programs may also be received via communication interface 404. Such computer programs, when executed, enable computer-based system 400 to perform the functions consistent with the present disclosure, as discussed herein. In particular, the computer programs, when executed, enable processor 402 to perform the features of the present disclosure. Accordingly, such computer programs represent controllers of computer-based system 400.

In accordance with an aspect of the present disclosure, where the disclosure is implemented using a software, the software may be stored in a computer program product and loaded into computer-based system 400 using removable storage drive 416, hard disk drive 414, or communication interface 424. The control logic (software), when executed by processor 402, causes processor 402 to perform the functions of the present disclosure as described herein.

In another aspect, the present disclosure is implemented primarily in hardware using, for example, hardware components, such as application specific integrated circuits (ASIC). Implementation of the hardware state machine to perform the functions described herein will be apparent to persons skilled in the relevant art(s). In yet another aspect, the present disclosure is implemented using a combination of both the hardware and the software. In another aspect, the present disclosure is implemented using software.

Various aspects disclosed herein are to be taken in the illustrative and explanatory sense, and should in no way be construed as limiting of the present disclosure. All numerical terms, such as, but not limited to, “first” and “second” or any other ordinary or numerical terms, should also be taken only as identifiers, to assist the reader's understanding of the various aspects, variations, components, or modifications of the present disclosure, and may not create any limitations, particularly as to the order, or preference, of any aspect, variation, component or modification relative to, or over, another aspect, variation, component or modification.

It is to be understood that individual features shown or described for one aspect may be combined with individual features shown or described for another aspect. The above described implementation does not in any way limit the scope of the present disclosure. Therefore, it is to be understood although some features are shown or described to illustrate the use of the present disclosure in the context of functional segments, such features may be omitted from the scope of the present disclosure without departing from the spirit of the present disclosure as defined in the appended claims.

The present disclosure is described herein with reference to system architecture, block diagrams, flowchart illustrations of methods, and computer program products according to various aspects of the disclosure. It will be understood that each functional block of the block diagrams and the flowchart illustrations, and combinations of functional blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions.

These software elements may be loaded onto a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions that execute on the computer or other programmable data-processing apparatus create means for implementing the functions specified in the flowchart block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data-processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means that implement the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data-processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks. In an aspect, the computer program instructions may be executed on any remote-hosted application framework, for example, by a processor associated with a cloud server.

Accordingly, functional blocks of the block diagrams and flow diagram illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions, and program instruction means for performing the specified functions. It will also be understood that each functional block of the block diagrams and flowchart illustrations, and combinations of functional blocks in the block diagrams and flowchart illustrations, can be implemented by either special purpose hardware-based computer systems which perform the specified functions or steps, or suitable combinations of special purpose hardware and computer instructions. Further, illustrations of the process flows and the descriptions thereof may make reference to user windows, web pages, websites, web forms, prompts, etc. Practitioners will appreciate that the illustrated steps described herein may comprise in any number of configurations including the use of windows, web pages, hypertexts, hyperlinks, web forms, popup windows, prompts, and the like. It should be further appreciated that the multiple steps as illustrated and described may be combined into single web pages and/or windows but have been expanded for the sake of simplicity. In other cases, steps illustrated and described as single process steps may be separated into multiple web pages and/or windows but have been combined for simplicity.

The systems, methods and computer program products disclosed in conjunction with various aspects of the present disclosure are embodied in systems and methods for facilitating multiple types of communications via a network-based portal.

While aspects of the present disclosure have been particularly shown and described with reference to the examples above, it will be understood by those skilled in the art that various combinations of the disclosed aspects or additional aspects may be contemplated by the modification of the disclosed machines, systems and methods without departing from the spirit and scope of what is disclosed. Such aspects should be understood to fall within the scope of the present disclosure as determined based upon the claims and any equivalents thereof. 

What is claimed:
 1. A method comprising: modeling a plurality of simulated destinations for call routing in a multiple call center simulation based on one or more call center profiles, wherein the one or more call center profiles include predicted performance for each of the multiple call centers, and wherein the one or more call center profiles are dynamic and adjust predicted performance based on updated data; simulating a call to the multiple call center simulation, wherein the call is associated with a complexity and propensity score; analyzing balancing factors associated with the plurality of simulated destinations for call routing according to one or more rules, wherein the balancing factors include the complexity; analyzing call details of the call to produce a call evaluation result; selecting, using a routing algorithm applying a first set of rules, a first simulated destination from the plurality of simulated destinations for the call, wherein the routing algorithm applies the first set of rules to the analysis of the balancing factors, the call evaluation result, and the propensity score; determining that a queue of the first simulated destination exceeds a threshold; dynamically modifying rules of the routing algorithm to cause the routing algorithm to apply a second set of rules in response to determining that the queue of the first simulated destination exceeds a threshold; selecting, using the routing algorithm applying a second set of rules, a second simulated destination from the plurality of simulated destinations for the call, wherein the routing algorithm applies the second set of rules to the analysis of the balancing factors, the call evaluation result, and the propensity score; routing the call to the second simulated destination; updating a second call load associated with the second simulated destination based on the call; comparing the second call load to a plurality of other call loads, wherein each of the other call loads is associated with at least one of the plurality of simulated destinations; updating the routing algorithm based on the comparing; and deploying the routing algorithm with updates to a production environment simulated by the multiple call center simulation.
 2. The method of claim 1, wherein at least one of the simulated first destination and the second simulated destination comprises an agent.
 3. The method of claim 2, further comprising: identifying the agent based on an agent profile associated with the agent.
 4. The method of claim 3, wherein the agent profile is indicative of an agent skill.
 5. The method of claim 1, wherein at least one of the first simulated destination and the second simulated destination comprises a call center.
 6. The method of claim 5, further comprising: identifying the call center based on a call center profile associated with the call center.
 7. The method of claim 6, wherein the call center profile is indicative of a bandwidth of the call center.
 8. A system comprising: a processor; and memory storing instructions that cause the processor to effectuate operations, the operations comprising: modeling a plurality of simulated destinations for call routing in a multiple call center simulation based on one or more call center profiles; simulating a call to the multiple call center simulation, wherein the call is associated with a complexity and propensity score; analyzing balancing factors associated with the plurality of simulated destinations for call routing according to one or more rules, wherein the balancing factors include the complexity; analyzing call details of the call to produce a call evaluation result; selecting, using a routing algorithm applying a first set of rules, a first simulated destination from the plurality of simulated destinations for the call, wherein the routing algorithm applies the first set of rules to the analysis of the balancing factors, the call evaluation result, and the propensity score; determining that a queue of the first simulated destination exceeds a threshold; dynamically modifying rules of the routing algorithm to cause the routing algorithm to apply a second set of rules in response to determining that the queue of the first simulated destination exceeds a threshold; selecting, using the routing algorithm applying a second set of rules, a second simulated destination from the plurality of simulated destinations for the call, wherein the routing algorithm applies the second set of rules to the analysis of the balancing factors, the call evaluation result, and the propensity score; routing the call to the second simulated destination; updating a second call load associated with the second simulated destination based on the call; comparing the second call load to a plurality of other call loads, wherein each of the other call loads is associated with at least one of the plurality of simulated destinations; updating the routing algorithm based on the comparing; and deploying the routing algorithm with updates to a production environment simulated by the multiple call center simulation.
 9. The system of claim 8, wherein the balancing factors include at least one of an availability of agents, a skill level of the agents, whether the agents are automated systems or human service representatives, a characteristics of a customer placing the call, call abandonment, routing protocols of call centers, skill levels of agents at the call centers, a number of agents at the call centers, forecasted and actual call volumes, and wait times.
 10. The system of claim 9, wherein the call details include at least one of a type of incoming call, an issue related to the call, a subject matter, a ranking, a categorization, a requirement that the call be directed to a particular simulated destination, a requirement that a call not be directed to a particular simulated destination, and an estimated time to resolve the call.
 11. The system of claim 8, wherein at least one of the first simulated destination and the second simulated destination comprises a call center.
 12. The system of claim 11, the operations further comprising: identifying the call center based on a call center profile associated with the call center.
 13. A non-transitory computer-readable storage medium storing instructions that cause a processor executing the instructions to effectuate operations, the operations comprising: modeling a plurality of simulated destinations for call routing in a multiple call center simulation based on one or more call center profiles; simulating a call to the multiple call center simulation, wherein the call is associated with a complexity and propensity score; analyzing balancing factors associated with the plurality of simulated destinations for call routing according to one or more rules, wherein the balancing factors include the complexity; analyzing call details of the call to produce a call evaluation result; selecting, using a routing algorithm applying a first set of rules, a first simulated destination from the plurality of simulated destinations for the call, wherein the routing algorithm applies the first set of rules to the analysis of the balancing factors, the call evaluation result, and the propensity score; determining that a queue of the first simulated destination exceeds a threshold; dynamically modifying rules of the routing algorithm to cause the routing algorithm to apply a second set of rules in response to determining that the queue of the first simulated destination exceeds a threshold; selecting, using the routing algorithm applying a second set of rules, a second simulated destination from the plurality of simulated destinations for the call, wherein the routing algorithm applies the second set of rules to the analysis of the balancing factors, the call evaluation result, and the propensity score; routing the call to the second simulated destination; updating a second call load associated with the second simulated destination based on the call; comparing the second call load to a plurality of other call loads, wherein each of the other call loads is associated with at least one of the plurality of simulated destinations; updating the routing algorithm based on the comparing; and deploying the routing algorithm with updates to a production environment simulated by the multiple call center simulation.
 14. The non-transitory computer-readable storage medium of claim 13, wherein at least one of the first simulated destination and the second simulated destination comprises an agent.
 15. The non-transitory computer-readable storage medium of claim 14, the operations further comprising: identifying the agent based on an agent profile associated with the agent.
 16. The method of claim 1, wherein the predicted performance is based on agent predicted performance describing one or more agents associated with each of the multiple call centers.
 17. The method of claim 1, wherein the call is based on raw call data.
 18. The method of claim 1, further comprising adjusting the predicted performance based on a personnel change at a respective call center.
 19. The method of claim 1, further comprising adjusting the predicted performance based on received actual performance data for a respective call center. 